/* NoX (NoC Simulator)
 *
 * Dept. of Computer Science & Engineering, Pennsylvania State University.
 * All Rights Reserved.
 *  
 * 1. License     
 * NoX is distributed free of charge for academic, educational, noncommercial 
 * research purposes as long as this notice in its entirety is preserved in
 * every file included in this package.
 * All commercial use of this program requires separate licence. Contact the
 * author for details.
 * 
 * 2. All the publications that used the simulation results generated by the 
 * NoX should notify the author of the publication information and put 
 * following reference.
 *
 *  http://www.cse.psu.edu/~dpark/nox/
 * 
 * 3. Modification of the source code is permitted and encouraged as long as 
 * it follows the terms described in this copyright notice.
 *
 * 4. The author is not responsible for any problems caused by possible errors
 * of the NoX package. Therefore, users should verify the simulation result
 * before using it in their publication.
 *
 * Dept. of Computer Science & Engineering, Pennsylvania State University.
 * Contact: dpark@cse.psu.edu 
 * 
 * 6. If problems are found with the NoX package, please send an email to the
 * author for discussion and correction.

 */

/* Update History
 *
 *
 */


#ifndef MULTIMEDIA_H
#define MULTIMEDIA_H

#define ONE_FLIT 	128.0 		/* 1 flit =  128 bits */
#define ONE_CYCLE       0.0000001024    /* 102.4 nsec */

/* Number of cycles per frame when 30 frames/sec */
#define	FRAME_TIME 	(1.0/ONE_CYCLE)/30.0

/* Group of Pictures */
#define GOP_SIZE 	15

/* MPEG-2 Statistics from Dr. Duato's video traces */

#define MPEG_VIDEO_NUM		7	/* total number is 7 */

/* Ayersroc (7.1Mbps)		# 0 */
#define AYER_BANDWIDTH		237940.8*30.0/ONE_FLIT

#define AYER_I_MEAN 		430238.1/ONE_FLIT
#define AYER_I_SD		69087.7/ONE_FLIT

#define AYER_P_MEAN 		295554.0/ONE_FLIT
#define AYER_P_SD		36318.3/ONE_FLIT

#define AYER_B_MEAN 		194190.5/ONE_FLIT
#define AYER_B_SD		30231.7/ONE_FLIT

/* Flower Garden (15.2Mbps)	# 1 */
#define FLOWER_BANDWIDTH	507714.6*30.0/ONE_FLIT

#define FLOWER_I_MEAN		839354.2/ONE_FLIT
#define FLOWER_I_SD		57415.8/ONE_FLIT

#define FLOWER_P_MEAN		680582.4/ONE_FLIT
#define FLOWER_P_SD		41021.2/ONE_FLIT

#define FLOWER_B_MEAN		401020.1/ONE_FLIT
#define FLOWER_B_SD		55604.6/ONE_FLIT

/* Football (13.5Mbps)		# 2 */
#define FOOT_BANDWIDTH		450880.0*30.0/ONE_FLIT

#define FOOT_I_MEAN		534656.0/ONE_FLIT
#define FOOT_I_SD		29512.8/ONE_FLIT

#define FOOT_P_MEAN		569376.0/ONE_FLIT
#define FOOT_P_SD		27796.1/ONE_FLIT

#define FOOT_B_MEAN		387759.2/ONE_FLIT
#define FOOT_B_SD		16277.7/ONE_FLIT

/* Hook (8.4Mbps)		# 3 */
#define HOOK_BANDWIDTH		278548.8*30.0/ONE_FLIT

#define HOOK_I_MEAN		393283.8/ONE_FLIT
#define HOOK_I_SD		20583.3/ONE_FLIT

#define HOOK_P_MEAN		340284.0/ONE_FLIT
#define HOOK_P_SD		73974.7/ONE_FLIT

#define HOOK_B_MEAN		241432.2/ONE_FLIT
#define HOOK_B_SD		55917.3/ONE_FLIT

/* Martin (6.1Mbps)		# 4 */
#define MARTIN_BANDWIDTH	204140.8*30.0/ONE_FLIT

#define MARTIN_I_MEAN		350637.2/ONE_FLIT
#define MARTIN_I_SD		58344.8/ONE_FLIT

#define MARTIN_P_MEAN		242928.0/ONE_FLIT
#define MARTIN_P_SD		44433.3/ONE_FLIT

#define MARTIN_B_MEAN		172865.2/ONE_FLIT
#define MARTIN_B_SD		27696.5/ONE_FLIT

/* Mobile Calendar (18.4Mbps)	# 5 */
#define MOBILE_BANDWIDTH	613534.7*30.0/ONE_FLIT

#define MOBILE_I_MEAN		974731.6/ONE_FLIT
#define MOBILE_I_SD		13125.9/ONE_FLIT

#define MOBILE_P_MEAN		721939.2/ONE_FLIT
#define MOBILE_P_SD		73986.8/ONE_FLIT

#define MOBILE_B_MEAN		529601.9/ONE_FLIT
#define MOBILE_B_SD		56172.3/ONE_FLIT

/* Table Tennis (13.5Mbps)	# 6 */
#define TENNIS_BANDWIDTH	449930.2*30.0/ONE_FLIT

#define TENNIS_I_MEAN		637579.6/ONE_FLIT
#define TENNIS_I_SD		134875.0/ONE_FLIT

#define TENNIS_P_MEAN		535996.8/ONE_FLIT
#define TENNIS_P_SD		190843.9/ONE_FLIT

#define TENNIS_B_MEAN		394305.9/ONE_FLIT
#define TENNIS_B_SD		128459.2/ONE_FLIT

/* End of Dr. Duato's video traces*/

int mpeg_generate(int trace_num, int f_num);

#endif
